package com.tanhua.server.controller;

import com.tanhua.domain.db.UserInfo;
import com.tanhua.server.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

//    1、请求方式  POST
//    2、请求路径 /user/login
//    3、请求参数 json结构  {"phone":"13800000000"}
//    4、返回类型 Void
    @PostMapping(value = "/login",name = "登录第一步---给手机号发送验证码")
    public ResponseEntity sendCode(@RequestBody Map map) throws Exception{
        String phone = (String) map.get("phone");
        return userService.sendCode(phone);
    }

//    1、请求方式  POST
//    2、请求路径 /user/loginVerification
//    3、请求参数 json结构  {"phone":"13800000000","verificationCode":"123456"}
//    4、返回数据 {token:"124rwesdgfgf",isNew:true}
    @PostMapping(value = "/loginVerification",name = "登录第二步---校验验证码")
    public ResponseEntity loginVerification(@RequestBody Map map) throws Exception{
        String phone = (String) map.get("phone");
        String verificationCode = (String) map.get("verificationCode");
        return userService.loginVerification(phone,verificationCode);
    }

//    1、请求方式  POST
//    2、请求路径 /user/loginReginfo
//    3、请求参数 请求头和 json结构 直接使用UserInfo接收
//    4、返回数据  无
    @PostMapping(value = "/loginReginfo",name = "新用户填写资料")
    public ResponseEntity loginReginfo(@RequestHeader("Authorization") String token,@RequestBody UserInfo userInfo) throws Exception{
        return userService.loginReginfo(token,userInfo);
    }

    //    1、请求方式  POST
//    2、请求路径 /user/loginReginfo/head
//    3、请求参数 请求头和 文件  文件的参数名：headPhoto
//    4、返回数据  无
    @PostMapping(value = "/loginReginfo/head",name = "新用户上传头像")
    public ResponseEntity loginReginfoHead(@RequestHeader("Authorization") String token, MultipartFile headPhoto) throws Exception{
        return userService.loginReginfoHead(token,headPhoto);
    }




    @GetMapping(value = "/findByMobile",name = "根据手机号查询用户")
    public ResponseEntity findByMobile(String mobile){
        return userService.findByMobile(mobile);
    }

//    {"telephone":"13800000000","password":"123456"}

    @PostMapping(value = "/save",name = "新增用户")
    public ResponseEntity save(@RequestBody Map map){
        String telephone = (String) map.get("telephone");
        String password = (String) map.get("password");
        return userService.save(telephone,password);
    }

}
